/**
 * 
 */
package mm.front.jsf.mb.reportes;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;

import mm.back.entity.ro.ResumenVentas;
import mm.back.filtros.ReporteVentasFiltro;
import mm.back.service.ReportesService;
import mm.front.jsf.JSFUtils;
import mm.front.jsf.mb.MMAbstractManagedBean;

/**
 * @author PUSDERKIS
 *
 */
public class ComisionesManagedBean extends MMAbstractManagedBean {

	private ReportesService reportesService;
	
	private ReporteVentasFiltro reporteVentasFiltro;
	
	private List<ResumenVentas> resumen;
	
	private BigDecimal porcentajeComision;
	
	private BigDecimal porcentajeComisionProcesado;
	
	
	public void calcularInformeComisiones() {
		
		BigDecimal x = getPorcentajeComision();
		BigDecimal cien = new BigDecimal(100);
		
		if(x != null){
			
			if (BigDecimal.ZERO.compareTo(x) <= 0){
				porcentajeComisionProcesado = x.divide(cien);
			} else {
				JSFUtils.addErrorMessage("No se puede ingresar una comisión menor que 0.");
				porcentajeComisionProcesado = BigDecimal.ZERO;
			}
			
		} else {
			porcentajeComisionProcesado = BigDecimal.ZERO;
		}
				
		
		resumen = reportesService.reporteComiciones(getReporteVentasFiltro());
		
	}
	
	
	/**
	 * @return the reporteVentasFiltro
	 */
	public ReporteVentasFiltro getReporteVentasFiltro() {
		if (reporteVentasFiltro == null){
			reporteVentasFiltro = new ReporteVentasFiltro();
		}
		return reporteVentasFiltro;
	}

	/**
	 * @param reporteVentasFiltro the reporteVentasFiltro to set
	 */
	public void setReporteVentasFiltro(ReporteVentasFiltro reporteVentasFiltro) {
		this.reporteVentasFiltro = reporteVentasFiltro;
	}

	/**
	 * @param reportesService the reportesService to set
	 */
	public void setReportesService(ReportesService reportesService) {
		this.reportesService = reportesService;
	}
	
	public List<Integer> getPosibleYears(){
		
		List<Integer> vals = new ArrayList<Integer>();
		
		int anoMax = GregorianCalendar.getInstance().get(Calendar.YEAR);
		
		for (int i = 2012 ; i <= anoMax ; i++){
			vals.add(i);
		}
		
		return vals;
	}


	/**
	 * @return the resumen
	 */
	public List<ResumenVentas> getResumen() {
		return resumen;
	}


	/**
	 * @param resumen the resumen to set
	 */
	public void setResumen(List<ResumenVentas> resumen) {
		this.resumen = resumen;
	}


	/**
	 * @return the porcentajeComision
	 */
	public BigDecimal getPorcentajeComision() {
		return porcentajeComision;
	}


	/**
	 * @param porcentajeComision the porcentajeComision to set
	 */
	public void setPorcentajeComision(BigDecimal porcentajeComision) {
		this.porcentajeComision = porcentajeComision;
	}
	
	public BigDecimal getPorcentajeComisionProcesado(){
		
		return porcentajeComisionProcesado;
		
	}
	
	
	
}
